<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
        "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
        "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
    <property name="charset" value="UTF-8"/>
    <module name="FileLength">
        <property name="max" value="600"/>
    </module>
    <module name="LineLength">
        <property name="max" value="120"/>
    </module>
    <module name="NewlineAtEndOfFile">
        <property name="lineSeparator" value="lf_cr_crlf"/>
    </module>
    <module name="FileTabCharacter"/>
    <module name="SuppressWarningsFilter"/>
    <module name="TreeWalker">
        <module name="SuppressionCommentFilter"/>
        <module name="SuppressWarningsHolder"/>
        <module name="AnnotationLocation"/>
        <module name="MissingOverride"/>

        <module name="EmptyCatchBlock"/>
        <module name="EmptyBlock"/>
        <module name="LeftCurly"/>
        <module name="RightCurly"/>
        <module name="NeedBraces"/>

        <module name="InnerTypeLast"/>
        <module name="InterfaceIsType"/>
        <module name="MutableException"/>

        <module name="CovariantEquals"/>
        <module name="DeclarationOrder"/>
        <module name="EmptyStatement"/>
        <module name="EqualsAvoidNull"/>
        <module name="EqualsHashCode"/>
        <module name="ExplicitInitialization"/>
        <module name="FinalLocalVariable"/> <!-- -->
        <module name="HiddenField">
            <property name="ignoreConstructorParameter" value="true"/>
            <property name="ignoreSetter" value="true"/>
            <property name="setterCanReturnItsClass" value="true"/>
        </module>
        <module name="MissingSwitchDefault"/>
        <module name="MultipleStringLiterals"/>
        <module name="MultipleVariableDeclarations"/>
        <module name="NestedForDepth"/>
        <module name="NestedIfDepth"/>
        <module name="NestedTryDepth">
            <property name="max" value="2"/>
        </module>
        <module name="OneStatementPerLine"/>
        <module name="ParameterAssignment"/> <!-- -->
        <module name="SimplifyBooleanExpression"/>
        <module name="StringLiteralEquality"/>
        <module name="VariableDeclarationUsageDistance"/> <!-- -->


        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/>
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>

        <module name="ClassDataAbstractionCoupling">
            <property name="max" value="15"/>
        </module>
        <module name="CyclomaticComplexity">
            <property name="max" value="15"/>
        </module>
        <module name="NPathComplexity"/>


        <module name="Indentation">
            <property name="lineWrappingIndentation" value="8"/>
            <property name="forceStrictCondition" value="false"/>
        </module>
        <module name="OuterTypeFilename"/>
        <module name="UpperEll"/>

        <module name="RedundantModifier"/>

        <module name="AbbreviationAsWordInName"/>
        <module name="AbstractClassName"/>
        <module name="CatchParameterName"/>
        <module name="ClassTypeParameterName"/>
        <module name="ConstantName"/>
        <module name="InterfaceTypeParameterName"/>
        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="MethodTypeParameterName"/>
        <module name="PackageName"/>
        <module name="ParameterName">
            <property name="ignoreOverridden" value="true"/>
        </module>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>

        <module name="MethodLength">
            <property name="max" value="40"/>
        </module>

        <module name="GenericWhitespace"/>
        <module name="NoWhitespaceAfter"/>
        <module name="NoWhitespaceBefore"/>
        <module name="OperatorWrap">
            <property name="option" value="eol"/>
        </module>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround"/>
    </module>
</module>
